<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // 实例成员
        // 实例对象中的属性和方法称为实例成员
        // 实例成员 只能通过实例本身（生成的那个对象）访问
        function Person(age) {
          this.name = 'ddd'
          this.age = age
          this.sayHi = function () {
            console.log('哈哈哈')
          }
        }
        const p = new Person(18)
        // 访问实例成员
        console.log(p.name)
  
        // 静态成员(直接加在构造函数本身的属性和方法)
        // 静态成员 只能通过构造函数本身访问
        Person.demo = '我是给构造函数添加的静态属性'
        Person.sayHi = function () {
          console.log('hello')
          console.log(this) // 静态成员中的this指向构造函数本身
        }
        console.dir(Person)
        Person.sayHi()
  
        let arr1 = [2, 3]
        let arr2 = 'ef'
        new Array(1, 2, 3)
        //   Array.from() // 静态方法
        //   Array.isArray() // 静态方法
        console.log(Array.isArray(arr1)) //true
        console.log(Array.isArray(arr2)) //false
  
        let arr = []
        // 实例方法
        //   arr.forEach()
        //   arr.filter()
        //   arr.map()
      </script>
</body>
</html>